সি প্রোগ্রামিং ভাষায় ম্যাক্রো এবং কন্ডিশনাল কম্পাইলিং শক্তিশালী টুল হিসেবে কাজ করে, যা প্রোগ্রামারের জন্য কোড রিইউজ, কোড অপটিমাইজেশন এবং প্ল্যাটফর্ম-নির্ভর কোড লেখার সুবিধা প্রদান করে।
ম্যাক্রো একটি ধরনের প্রি-প্রসেসর নির্দেশনা যা কোডের অংশকে রিপ্লেস করে। এটি কম্পাইলারের পূর্বে কোডকে পরিবর্তন করে (রিপ্লেস) এবং কোডের পুনঃব্যবহার নিশ্চিত করে। C প্রোগ্রামে ম্যাক্রো দুটি প্রধান প্রকারের হতে পারে:
#define MACRO_NAME replacement_text
#include <stdio.h>
#define PI 3.14159 // ম্যাক্রো ডিফাইনেশন
int main() {
printf("Value of PI: %f\n", PI); // PI কে 3.14159 দিয়ে রিপ্লেস করবে
return 0;
}
এখানে, #define
দ্বারা PI
নামক একটি ম্যাক্রো তৈরি করা হয়েছে, যা পরে কোডে PI
লিখলে 3.14159
দিয়ে রিপ্লেস হবে।
#include <stdio.h>
#define SQUARE(x) ((x) * (x)) // ফাংশন ম্যাক্রো
int main() {
int num = 5;
printf("Square of %d is %d\n", num, SQUARE(num)); // SQUARE(num) কে num*num দিয়ে রিপ্লেস করবে
return 0;
}
এখানে, SQUARE(x)
ফাংশন ম্যাক্রো তৈরি করা হয়েছে, যা একটি সংখ্যা গ্রহণ করে এবং তার বর্গফল প্রদান করে।
বিঃদ্রঃ ম্যাক্রো ব্যবহারের সময় প্যারেনথেসিস ব্যবহার করে সাবধান থাকতে হবে যাতে গণনা ঠিকভাবে হয়।
কন্ডিশনাল কম্পাইলিং একটি শক্তিশালী প্রি-প্রসেসর ফিচার যা কোডের অংশগুলি নির্দিষ্ট শর্তের উপর ভিত্তি করে অন্তর্ভুক্ত বা বাদ দেওয়ার অনুমতি দেয়। এটি সাধারণত প্ল্যাটফর্ম নির্ভর কোড বা নির্দিষ্ট কনফিগারেশন ব্যবহারের জন্য ব্যবহৃত হয়।
#ifdef
/ #ifndef
(If defined / If not defined)#if
/ #elif
/ #else
/ #endif
(Conditional check)#ifdef
এবং #endif
(If Defined)#include <stdio.h>
#define DEBUG // DEBUG ম্যাক্রো ডিফাইন করা
int main() {
#ifdef DEBUG // যদি DEBUG ডিফাইন করা থাকে
printf("Debug mode is ON\n");
#else
printf("Debug mode is OFF\n");
#endif
return 0;
}
এখানে, #ifdef DEBUG
কোডটি শুধুমাত্র তখনই চালানো হবে যখন DEBUG
ম্যাক্রো ডিফাইন করা থাকবে। #else
ব্লকের কোডটি তখনই চালানো হবে যখন DEBUG
ডিফাইন করা না থাকবে।
#ifndef
(If Not Defined)#include <stdio.h>
#ifndef MAX_BUFFER_SIZE // যদি MAX_BUFFER_SIZE ডিফাইন না করা থাকে
#define MAX_BUFFER_SIZE 1024 // ডিফাইন করা হচ্ছে
#endif
int main() {
printf("Max buffer size: %d\n", MAX_BUFFER_SIZE);
return 0;
}
এখানে, #ifndef MAX_BUFFER_SIZE
চেক করবে যে MAX_BUFFER_SIZE
ডিফাইন করা হয়নি। যদি না করা থাকে, তবে এটি #define MAX_BUFFER_SIZE 1024
এর মাধ্যমে সেটি ডিফাইন করবে।
#if
এবং #elif
(Conditional Expressions)#include <stdio.h>
#define ENVIRONMENT 1 // 1: Development, 2: Production
int main() {
#if ENVIRONMENT == 1
printf("Running in Development mode\n");
#elif ENVIRONMENT == 2
printf("Running in Production mode\n");
#else
printf("Unknown Environment\n");
#endif
return 0;
}
এখানে, #if
চেক করবে ENVIRONMENT
এর মান। যদি এর মান ১ হয়, তবে ডেভেলপমেন্ট মোডে প্রিন্ট করবে, আর যদি ২ হয়, তবে প্রোডাকশন মোডে প্রিন্ট করবে।
নির্দেশনা | বর্ণনা |
---|---|
#define | একটি ম্যাক্রো ডিফাইন করা (এটি রিপ্লেসমেন্ট হিসাবে কাজ করে)। |
#ifdef | যদি ম্যাক্রো ডিফাইন করা থাকে তবে কোড চালাবে। |
#ifndef | যদি ম্যাক্রো ডিফাইন না করা থাকে তবে কোড চালাবে। |
#if | কন্ডিশনাল এক্সপ্রেশন দিয়ে শর্তাধীন কোড চালানো। |
#elif | একাধিক শর্ত পরীক্ষা করতে ব্যবহৃত হয়। |
#else | পূর্ববর্তী শর্তের মেল না খেলে কোড চালানো। |
#endif | কন্ডিশনাল কম্পাইলিং শেষ করা। |
PI
) দ্বারা মান প্রতিস্থাপন করে।ম্যাক্রো এবং কন্ডিশনাল কম্পাইলিং ব্যবহার করার মাধ্যমে আপনার প্রোগ্রাম আরও নমনীয় এবং কার্যকরী হতে পারে, বিশেষ করে যখন আপনি একাধিক প্ল্যাটফর্মে কোড রান করান।
common.read_more